# Makefile 里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释.
# 1. 显式规则.显式规则说明了如何生成一个或多个目标文件.
#    这是由 Makefile 的书写者明显指出要生成的文件、文件的依赖文件和生成的命令.
# 2. 隐晦规则.由于我们的 make 有自动推导的功能,所以隐晦的规则可以让我们比较简略地书写 Makefile,这是由 make 所支持的.
# 3. 变量的定义.在 Makefile 中我们要定义一系列的变量,变量一般都是字符串,这个有点像你 C 语
#    言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上.
# 4. 文件指示.其包括了三个部分,一个是在一个 Makefile 中引用另一个 Makefile,就像 C 语言中的
#    include 一样;另一个是指根据某些情况指定 Makefile 中的有效部分,就像 C 语言中的预编译 #if
#    一样;还有就是定义一个多行的命令.有关这一部分的内容,我会在后续的部分中讲述.
# 5. 注释.Makefile 中只有行注释,和 UNIX 的 Shell 脚本一样,其注释是用 # 字符,这个就像 C/C++
#    中的 // 一样.如果你要在你的 Makefile 中使用 # 字符,可以用反斜杠进行转义,如:\# .
# 最后,还值得一提的是,在 Makefile 中的命令,必须要以 Tab 键开始.


objects := me.o brother.o father.o mother.o grandparents.o


main : $(objects)
	cc -o main $(objects)

# 自动推导
# me.o 目标会使得 make 命令自动寻找 me.c 并执行 cc -c -o me.o me.c
me.o:
brother.o:
# 同依赖 target 可叠加写在一起
father.o mother.o : f.h #相同的依赖
grandparents.o:


# clean 的规则不要放在文件的开头
# 不然这就会变成 make 的默认目标
.PHONY: clean

clean:
    #在 rm 命令前面加了一个小减号的意思就是: 也许某些文件出现问题, 但不要管, 继续做后面的事
	-rm -rf $(objects)
	rm -rf main